From f63e8edec68a158910f5f971b5f47cb9b51825cb Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 4 Jan 2016 21:22:11 -0500 Subject: [PATCH] Make sure icons update on theme change Gadgets don't connect to style-changed for widget nodes, and GtkImage uses its widget node for the icon helper. The visible effect of this is that symbolic icons don't change color when switching to the dark variant of Adwaita. Fix this by manually invalidating the icon helper. --- gtk/gtkiconhelper.c | 2 +- gtk/gtkiconhelperprivate.h | 1 + gtk/gtkimage.c | 10 ++++++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/gtk/gtkiconhelper.c b/gtk/gtkiconhelper.c index 3671c5fc8c..73f105f130 100644 --- a/gtk/gtkiconhelper.c +++ b/gtk/gtkiconhelper.c @@ -48,7 +48,7 @@ struct _GtkIconHelperPrivate { G_DEFINE_TYPE_WITH_PRIVATE (GtkIconHelper, gtk_icon_helper, GTK_TYPE_CSS_GADGET) -static void +void gtk_icon_helper_invalidate (GtkIconHelper *self) { if (self->priv->rendered_surface != NULL) diff --git a/gtk/gtkiconhelperprivate.h b/gtk/gtkiconhelperprivate.h index 291fb40e16..f4bdcd4817 100644 --- a/gtk/gtkiconhelperprivate.h +++ b/gtk/gtkiconhelperprivate.h @@ -138,6 +138,7 @@ gboolean _gtk_icon_helper_get_force_scale_pixbuf (GtkIconHelper *self); void _gtk_icon_helper_set_force_scale_pixbuf (GtkIconHelper *self, gboolean force_scale); +void gtk_icon_helper_invalidate (GtkIconHelper *self); G_END_DECLS diff --git a/gtk/gtkimage.c b/gtk/gtkimage.c index 82f7d7cae9..703515b38c 100644 --- a/gtk/gtkimage.c +++ b/gtk/gtkimage.c @@ -1915,6 +1915,16 @@ gtk_image_style_updated (GtkWidget *widget) { GtkImage *image = GTK_IMAGE (widget); GtkImagePrivate *priv = image->priv; + GtkStyleContext *context; + + context = gtk_widget_get_style_context (widget); + if (context) + { + GtkCssStyleChange *change = gtk_style_context_get_change (context); + + if (change && gtk_css_style_change_affects (change, GTK_CSS_AFFECTS_ICON)) + gtk_icon_helper_invalidate (priv->icon_helper); + } GTK_WIDGET_CLASS (gtk_image_parent_class)->style_updated (widget); -- 2.30.2